package com.cy.db.sys.dao;

import com.cy.db.sys.entity.SysUser;
import com.cy.db.sys.vo.SysUserDeptVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface SysUserDao {
    /**
     * 基于用户名进行用户信息的模糊查询,获取总记录数
     * @param username 用户名
     * @return 查询的总记录数
     */
    long getRowCount(@Param("username") String username);

    /**
     *  基于条件查询当前页数据
     * @param username 用户名
     * @param startIndex 起始位置
     * @param pageSize 页面大小(每页最多显示多少条记录)
     * @return 查询到的记录
     */
    List<SysUserDeptVO> findPageObjects(
            @Param("username") String username,
            @Param("startIndex") Long startIndex,
            @Param("pageSize") Integer pageSize);

    /**
     *  修改用户禁用/启用状态
     * @param id 用户id
     * @param valid 转态
     * @return 修改的记录数
     */
    int validById(
            @Param("id") Integer id,
            @Param("valid") Integer valid,
            @Param("modifiedUser") String modifiedUser);

    /**
     *  添加用户信息
     * @param entity 用户对象
     * @return 添加的记录数
     */
    int insertObject(SysUser entity);

    /**
     *  用户修改页面呈现
     * @return SysUserDeptVO
     */
    SysUserDeptVO findObjectById(@Param("id") Integer id);

    /**
     *  用户修改
     * @param entity 用户对象
     * @return 修改的记录数
     */
    int updateObject(SysUser entity);

    /**
     *  根据用户名找到用户信息
     * @param username 用户名
     * @return  SysUser
     */
    SysUser findUserByUserName(@Param("username") String username);
}
